#!/bin/bash

# 输出颜色设置
GREEN="\033[0;32m"
YELLOW="\033[1;33m"
RED="\033[0;31m"
NC="\033[0m" # No Color

echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}     微机室签到系统开发环境启动脚本     ${NC}"
echo -e "${GREEN}========================================${NC}"

# 检查端口占用
check_port() {
    local port=$1
    local service=$2
    if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
        echo -e "${YELLOW}警告: $service 端口 $port 已被占用${NC}"
        return 1
    fi
    return 0
}

# 检查数据库连接
echo -e "${GREEN}检查数据库连接...${NC}"
if ! mysql -u root -ppassword -e "SELECT 1" >/dev/null 2>&1; then
    echo -e "${RED}错误: 无法连接到MySQL数据库${NC}"
    echo -e "${YELLOW}请确保MySQL服务已启动，并且用户名密码正确${NC}"
    echo -e "${YELLOW}用户名: root, 密码: password${NC}"
    exit 1
fi

# 检查Redis连接
echo -e "${GREEN}检查Redis连接...${NC}"
if ! redis-cli ping >/dev/null 2>&1; then
    echo -e "${YELLOW}警告: 无法连接到Redis服务${NC}"
    echo -e "${YELLOW}某些功能可能无法正常使用${NC}"
fi

# 检查端口
check_port 8080 "后端服务"
check_port 3000 "前端服务"
check_port 8090 "WebSocket服务"

# 创建新终端启动后端服务
echo -e "${GREEN}启动后端服务...${NC}"
echo -e "${YELLOW}请在新终端中执行以下命令:${NC}"
echo -e "cd /home/todo/checkin/backend && mvn spring-boot:run"

# 创建新终端启动前端服务
echo -e "\n${GREEN}启动前端服务...${NC}"
echo -e "${YELLOW}请在另一个新终端中执行以下命令:${NC}"
echo -e "cd /home/todo/checkin/frontend && npm run dev"

echo -e "\n${GREEN}========================================${NC}"
echo -e "${GREEN}启动说明:${NC}"
echo -e "1. 后端服务: http://localhost:8080/api"
echo -e "2. 前端服务: http://localhost:3000"
echo -e "3. WebSocket服务: ws://localhost:8090"
echo -e "\n${YELLOW}请确保MySQL和Redis服务已正常运行${NC}"
echo -e "${GREEN}========================================${NC}"